package model

import (
	"gitee.com/xuxinzhi2206/corehub/database/mysql"
	"gorm.io/gorm"
)

// 商品sku表
type GoodsSku struct {
	gorm.Model
	ProValueId1 int64   `gorm:"column:pro_value_id1;type:int(11)"     json:"pro_value_id1"`
	ProValueId2 int64   `gorm:"column:pro_value_id2;type:int(11)"     json:"pro_value_id2"`
	ProValueId3 int64   `gorm:"column:pro_value_id3;type:int(11)"     json:"pro_value_id3"`
	Price       float64 `gorm:"column:price;type:decimal(10,2)"       json:"price"`
	VipPrice    float64 `gorm:"column:vip_price;type:decimal(10,2)"   json:"vip_price"`
	Stock       int64   `gorm:"column:stock;type:int(11)"             json:"stock"`
	GoodsId     int64   `gorm:"column:goods_id;type:int(11)"          json:"goods_id"`
}

// 搜索
func (g *GoodsSku) GetGoodsSkuByPropertyValueIds(proValueId1, proValueId2, proValueId3 int64) (info *GoodsSku, err error) {
	return g, mysql.WithMysql(func(db *gorm.DB) error {
		var query = db.Model(g)
		if proValueId1 != 0 {
			query = query.Where("pro_value_id1 =?", proValueId1)
		}
		if proValueId2 != 0 {
			query = query.Where("pro_value_id2 =?", proValueId2)
		}
		if proValueId3 != 0 {
			query = query.Where("pro_value_id3 =?", proValueId3)
		}
		return query.First(g).Error
	})
}

// 查询
func (g *GoodsSku) GetSkuInfoByID(skuID int64) (info *GoodsSku, err error) {
	err = mysql.WithMysql(func(db *gorm.DB) error {
		return db.Model(g).Where("id = ?", skuID).First(&info).Error
	})
	return
}

// *
type SkuGoodsInfo struct {
	Price    float64
	VipPrice float64
	Stock    int64
	Title    string
	Img      string
}

// skuID查询 *
func (g *GoodsSku) GetGoodsInfoBySkuIds(skuID []int64) (info []GoodsSku, err error) {
	err = mysql.WithMysql(func(db *gorm.DB) error {
		return db.Model(g).Where("id in(?)", skuID).Find(&info).Error
	})
	return
}
